// samsting : this file is auto create.

#ifndef ALIYUN_Ons_OnsConsumerStatusResponse_H_
#define ALIYUN_Ons_OnsConsumerStatusResponse_H_

#include "core/acs_response.h"

namespace aliyun { namespace Ons {

class OnsConsumerStatusResponse : public AcsResponse {
public:
  OnsConsumerStatusResponse();

  class Data {
    friend class OnsConsumerStatusResponse;
  public:

    class ConnectionDo {
      friend class OnsConsumerStatusResponse;
      friend class Data;
    public:
      const string& GetClientId(void) const;
      const string& GetClientAddr(void) const;
      const string& GetLanguage(void) const;
      const string& GetVersion(void) const;
    private:
      string ClientId_;
      string ClientAddr_;
      string Language_;
      string Version_;
    }; // ConnectionDo 


    class DetailInTopicDo {
      friend class OnsConsumerStatusResponse;
      friend class Data;
    public:

      class ConsumeQueueOffset {
        friend class OnsConsumerStatusResponse;
        friend class Data;
        friend class DetailInTopicDo;
      public:
        const string& GetTopic(void) const;
        const string& GetBrokerName(void) const;
        int  GetQueueId(void) const;
        int64 GetBrokerOffset(void) const;
        int64 GetConsumerOffset(void) const;
        int64 GetLastTimestamp(void) const;
      private:
        string Topic_;
        string BrokerName_;
        int    QueueId_;
        int64  BrokerOffset_;
        int64  ConsumerOffset_;
        int64  LastTimestamp_;
      }; // ConsumeQueueOffset 

      const std::vector<ConsumeQueueOffset>& GetOffsetList(void) const;
      const string& GetTopic(void) const;
      float GetConsumeTps(void) const;
      int64 GetLastTimestamp(void) const;
      int64 GetDelayTime(void) const;
    private:
      std::vector<ConsumeQueueOffset> OffsetList_;
      string Topic_;
      float   ConsumeTps_;
      int64  LastTimestamp_;
      int64  DelayTime_;
    }; // DetailInTopicDo 


    class ConsumerConnectionInfoDo {
      friend class OnsConsumerStatusResponse;
      friend class Data;
    public:

      class SubscriptionData {
        friend class OnsConsumerStatusResponse;
        friend class Data;
        friend class ConsumerConnectionInfoDo;
      public:
        const std::vector<Tag>& GetTagsSet(void) const;
        const std::vector<Code>& GetCodeSet(void) const;
        bool GetClassFilterMode(void) const;
        const string& GetTopic(void) const;
        const string& GetSubString(void) const;
        int64 GetSubVersion(void) const;
      private:
        std::vector<Tag> TagsSet_;
        std::vector<Code> CodeSet_;
        bool   ClassFilterMode_;
        string Topic_;
        string SubString_;
        int64  SubVersion_;
      }; // SubscriptionData 


      class ConsumerRunningDataDo {
        friend class OnsConsumerStatusResponse;
        friend class Data;
        friend class ConsumerConnectionInfoDo;
      public:
        const string& GetConsumerId(void) const;
        const string& GetTopic(void) const;
        float GetRt(void) const;
        float GetOkTps(void) const;
        int64 GetFailedTps(void) const;
        int64 GetFailedCountPerHour(void) const;
      private:
        string ConsumerId_;
        string Topic_;
        float   Rt_;
        float   OkTps_;
        int64  FailedTps_;
        int64  FailedCountPerHour_;
      }; // ConsumerRunningDataDo 


      class ThreadTrackDo {
        friend class OnsConsumerStatusResponse;
        friend class Data;
        friend class ConsumerConnectionInfoDo;
      public:
        const std::vector<Track>& GetTrackList(void) const;
        const string& GetThread(void) const;
      private:
        std::vector<Track> TrackList_;
        string Thread_;
      }; // ThreadTrackDo 


      class ProcessQueueInfoDo {
        friend class OnsConsumerStatusResponse;
        friend class Data;
        friend class ConsumerConnectionInfoDo;
      public:

        class WarnMap {
          friend class OnsConsumerStatusResponse;
          friend class Data;
          friend class ConsumerConnectionInfoDo;
          friend class ProcessQueueInfoDo;
        public:
          const string& GetLOCK(void) const;
          const string& GetUNLOCK(void) const;
          const string& GetBLOCK(void) const;
        private:
          string LOCK_;
          string UNLOCK_;
          string BLOCK_;
        }; // WarnMap 

        const WarnMap& GetWarnMap(void) const;
        const string& Gettopic(void) const;
        const string& GetBrokerName(void) const;
        int  GetQueueId(void) const;
      private:
        WarnMap WarnMap_;
        string topic_;
        string BrokerName_;
        int    QueueId_;
      }; // ProcessQueueInfoDo 

      const std::vector<SubscriptionData>& GetSubscriptionSet(void) const;
      const std::vector<ConsumerRunningDataDo>& GetRunningDataList(void) const;
      const std::vector<ThreadTrackDo>& GetJstack(void) const;
      const std::vector<ProcessQueueInfoDo>& GetProcessQueueInfoDoList(void) const;
      const string& GetInstanceId(void) const;
      const string& GetConnection(void) const;
      const string& GetLanguage(void) const;
      const string& GetVersion(void) const;
      const string& GetConsumeModel(void) const;
      const string& GetConsumeType(void) const;
      int  GetThreadCount(void) const;
      int64 GetStartTimeStamp(void) const;
      int64 GetLastTimeStamp(void) const;
    private:
      std::vector<SubscriptionData> SubscriptionSet_;
      std::vector<ConsumerRunningDataDo> RunningDataList_;
      std::vector<ThreadTrackDo> Jstack_;
      std::vector<ProcessQueueInfoDo> ProcessQueueInfoDoList_;
      string InstanceId_;
      string Connection_;
      string Language_;
      string Version_;
      string ConsumeModel_;
      string ConsumeType_;
      int    ThreadCount_;
      int64  StartTimeStamp_;
      int64  LastTimeStamp_;
    }; // ConsumerConnectionInfoDo 

    const std::vector<ConnectionDo>& GetConnectionSet(void) const;
    const std::vector<DetailInTopicDo>& GetDetailInTopicList(void) const;
    const std::vector<ConsumerConnectionInfoDo>& GetConsumerConnectionInfoList(void) const;
    bool GetOnline(void) const;
    int64 GetTotalDiff(void) const;
    float GetConsumeTps(void) const;
    int64 GetLastTimestamp(void) const;
    int64 GetDelayTime(void) const;
    const string& GetConsumeModel(void) const;
    bool GetSubscriptionSame(void) const;
    bool GetRebalanceOK(void) const;
  private:
    std::vector<ConnectionDo> ConnectionSet_;
    std::vector<DetailInTopicDo> DetailInTopicList_;
    std::vector<ConsumerConnectionInfoDo> ConsumerConnectionInfoList_;
    bool   Online_;
    int64  TotalDiff_;
    float   ConsumeTps_;
    int64  LastTimestamp_;
    int64  DelayTime_;
    string ConsumeModel_;
    bool   SubscriptionSame_;
    bool   RebalanceOK_;
  }; // Data 

  const Data& GetData(void) const;
  const string& GetHelpUrl(void) const;

private:
  Data Data_;
  string HelpUrl_;

protected:
  const char* BaseKey(void);
  void         UnmarshallerMap(std::map<string, string>& response_map);

};

} } // namespace aliyun { namespace Ons {

#endif // #ifndef ALIYUN_Ons_OnsConsumerStatusResponse_H_

// end of file 
